#ifndef _USER_ADC_H
#define _USER_ADC_H

#include "sdkconfig.h"

#define GPIO_ADC_SWITCH_IO                  32
#define GPIO_OUTPUT_PIN_SEL                 ((1ULL << GPIO_ADC_SWITCH_IO))

#define USER_ADC_UNIT                       ADC_UNIT_1
#define _USER_ADC_UNIT_STR(unit)            #unit
#define USER_ADC_UNIT_STR(unit)             _USER_ADC_UNIT_STR(unit)
#define USER_ADC_CONV_MODE                  ADC_CONV_SINGLE_UNIT_1
#define USER_ADC_ATTEN                      ADC_ATTEN_DB_0
#define USER_ADC_BIT_WIDTH                  SOC_ADC_DIGI_MAX_BITWIDTH

#if CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2
#define USER_ADC_OUTPUT_TYPE                ADC_DIGI_OUTPUT_FORMAT_TYPE1
#define USER_ADC_GET_CHANNEL(p_data)     ((p_data)->type1.channel)
#define USER_ADC_GET_DATA(p_data)        ((p_data)->type1.data)
#else
#define USER_ADC_OUTPUT_TYPE                ADC_DIGI_OUTPUT_FORMAT_TYPE2
#define USER_ADC_GET_CHANNEL(p_data)     ((p_data)->type2.channel)
#define USER_ADC_GET_DATA(p_data)        ((p_data)->type2.data)
#endif

#define USER_READ_LEN                       256

void user_adc_task(void);

#endif
